<?php
namespace Swiftx\Interfaces\Bundle;
use Swiftx\Interfaces\Application\Kernel as AppKernel;

/**
 * 模型接口
 * @package Swiftx\Interfaces\Application
 */
interface Kernel {

    /**
     * 获取名称
     * @return string
     */
    public function getName():string;

    /**
     * 获取依赖
     * @return string[]
     */
    public function getDependents():array;

    /**
     * 模块引导
     * @param AppKernel $kernel
     */
    public function boot(AppKernel $kernel);

    /**
     * 项目构建
     */
    public function build();

    /**
     * 是否已启动
     * @return bool
     */
    public function hasBooted():bool;

    /**
     * 获取所在目录
     * @return string
     */
    public function getRootPath():string;

}